上次我們已經完成設定的部分,這次我們打開controllers/Api.php
以下是我們先前完成的驗證API函式:
function check_api_file($path_name, $func_name) {
// 取得API清單
$routes = $this->config->item('routes_api');
// 確認是否有指定的API路徑與資料
if (isset($routes[$path_name]) && (isset($routes[$path_name]['get'][$func_name]) || isset($routes[$path_name]['post'][$func_name]))) {
if (isset($routes[$path_name]['get'][$func_name])) {
// 有此API可以進行接下來動作
$json_arr = $this->mod_config->msgResponse((isset($json_arr))?$json_arr:array(), 'success', 'GET_DATA_SUCCESS', $this->language);
$json_arr['path'] = $path_name;
$json_arr['func'] = $routes[$path_name]['get'][$func_name]; // 取得名稱
$json_arr['type'] = 'get'; // 傳輸方法
} else if (isset($routes[$path_name]['post'][$func_name])) {
// 有此API可以進行接下來動作
$json_arr = $this->mod_config->msgResponse((isset($json_arr))?$json_arr:array(), 'success', 'GET_DATA_SUCCESS', $this->language);
$json_arr['path'] = $path_name;
$json_arr['func'] = $routes[$path_name]['post'][$func_name]; // 取得名稱
$json_arr['type'] = 'post'; // 傳輸方法
} else {
// #1
// 找不到API,回報錯誤
$json_arr = $this->mod_config->msgResponse((isset($json_arr))?$json_arr:array(), 'error', 'DATA_FAIL', $this->language);
}
} else {
// 找不到API,回報錯誤
$json_arr = $this->mod_config->msgResponse((isset($json_arr))?$json_arr:array(), 'error', 'DATA_FAIL', $this->language);
}
return $json_arr; // 回傳結果
}
接著我們在上面的#1
地方加入驗證RESTful API,我們新建驗證的函式:
以上省略...
} else {
$res = $this->check_api_table($path_name, $func_name);
if ($res) {
// working
} else {
// 找不到API,回報錯誤
$json_arr = $this->mod_config->msgResponse((isset($json_arr))?$json_arr:array(), 'error', 'DATA_FAIL', $this->language);
}
}
接著我們可以透過check_api_table
來驗證是否有在名單內:
// 確認是否在routers_table名單上
function check_api_table($path_name, $func_name) {
$methods = $this->config->item('routes_table');
if (isset($methods[$path_name])) {
$work = false;
foreach ($methods[$path_name]['method'] as $key => $value) {
if ($value == $func_name) $work = $value;
}
return $work;
} else {
return false;
}
}
如此一來就可以完成驗證,
明天我們再把這些內容去分別呼叫不同的參數
Next station ... RESTful API